common.skill

অ্যাডভান্স এসকিউএল (SQL Advance)

Database Tutorials - এসকিউএল (SQL)
320
320

অ্যাডভান্স এসকিউএল (Advanced SQL) হল SQL-এর উন্নত স্তরের ফিচার এবং কৌশল যা সাধারণত ডেটাবেসের জটিল কাজ, বৃহৎ ডেটাসেট পরিচালনা এবং উন্নত কুয়েরি অপটিমাইজেশনের জন্য ব্যবহৃত হয়। অ্যাডভান্স SQL ব্যবহারকারীকে ডেটাবেসের আরও জটিল অপারেশন, যেমন সাব-কুয়েরি, জয়েন, ট্রানজেকশন ম্যানেজমেন্ট, উইন্ডো ফাংশন এবং পারফরম্যান্স টিউনিং শিখতে সহায়তা করে।

এখানে অ্যাডভান্স এসকিউএল এর কিছু প্রধান কৌশল এবং কনসেপ্ট আলোচনা করা হলো:


১. সাব-কুয়েরি (Subqueries)

সাব-কুয়েরি হল একটি কুয়েরি যা আরেকটি কুয়েরির মধ্যে অন্তর্ভুক্ত থাকে। সাব-কুয়েরি ব্যবহার করে, আপনি মূল কুয়েরি থেকে পৃথকভাবে একটি কুয়েরি চালাতে পারেন এবং তার ফলাফল ব্যবহার করতে পারেন।

১.১ ইনলাইন সাব-কুয়েরি (Inline Subquery)

এটি মূল কুয়েরির WHERE, FROM, অথবা SELECT অংশে ইনপুট হিসেবে ব্যবহার করা হয়।

SELECT name, age FROM Employees WHERE age > (SELECT AVG(age) FROM Employees);

এটি Employees টেবিলের age এর গড় থেকে বেশি বয়সের কর্মীদের নির্বাচন করবে।

১.২ স্কেলার সাব-কুয়েরি (Scalar Subquery)

এটি একটি একক মান রিটার্ন করে।

SELECT name, (SELECT MAX(salary) FROM Employees) FROM Employees;

এটি প্রতিটি কর্মীর নাম এবং সর্বোচ্চ বেতন রিটার্ন করবে।


২. জয়েন (JOINs)

JOIN হল SQL এর একটি গুরুত্বপূর্ণ টেকনিক যা একাধিক টেবিলের মধ্যে সম্পর্ক তৈরি করে এবং তাদের মধ্যে ডেটা একত্র করে। অ্যাডভান্স SQL-এ বিভিন্ন ধরনের JOIN ব্যবহার করা হয়।

২.১ INNER JOIN

এটি দুটি টেবিলের মধ্যে যে রেকর্ডগুলি একে অপরের সাথে মিলছে, তা ফেরত দেয়।

SELECT Employees.name, Departments.name
FROM Employees
INNER JOIN Departments ON Employees.department_id = Departments.id;

এটি Employees এবং Departments টেবিলের মধ্যে মিলিত রেকর্ডগুলি ফিরিয়ে আনবে।

২.২ LEFT JOIN (Left Outer Join)

এটি প্রথম টেবিলের সব রেকর্ড এবং দ্বিতীয় টেবিলের সাথে মেলে এমন রেকর্ডগুলি ফেরত দেয়।

SELECT Employees.name, Departments.name
FROM Employees
LEFT JOIN Departments ON Employees.department_id = Departments.id;

এটি সব কর্মী এবং তাদের সম্পর্কিত বিভাগের নাম ফিরিয়ে আনবে, যদি বিভাগ না থাকে তবে NULL ফিরিয়ে আনবে।

২.৩ RIGHT JOIN (Right Outer Join)

এটি দ্বিতীয় টেবিলের সব রেকর্ড এবং প্রথম টেবিলের সাথে মেলে এমন রেকর্ডগুলি ফেরত দেয়।

SELECT Employees.name, Departments.name
FROM Employees
RIGHT JOIN Departments ON Employees.department_id = Departments.id;

এটি সব বিভাগ এবং তাদের কর্মীদের নাম ফিরিয়ে আনবে, যদি কোনো কর্মী না থাকে তবে NULL ফিরিয়ে আনবে।

২.৪ FULL OUTER JOIN

এটি প্রথম এবং দ্বিতীয় টেবিলের সমস্ত রেকর্ড ফেরত দেয়, যা মিল বা না মিল কোনটি হতে পারে।

SELECT Employees.name, Departments.name
FROM Employees
FULL OUTER JOIN Departments ON Employees.department_id = Departments.id;

এটি সব কর্মী এবং সব বিভাগ ফিরিয়ে আনবে, যেখানে কোনো মেল না খেলে NULL দেখাবে।


৩. গ্রুপিং (Grouping)

GROUP BY ক্লজ ব্যবহার করে, আপনি ডেটাকে গ্রুপ করতে পারেন এবং কিছু ফাংশন যেমন SUM(), COUNT(), AVG() এর মাধ্যমে গ্রুপের উপর সঞ্চালিত কিছু পরিসংখ্যান তৈরি করতে পারেন।

৩.১ GROUP BY ব্যবহার

SELECT department_id, COUNT(*) FROM Employees GROUP BY department_id;

এটি Employees টেবিল থেকে প্রতিটি বিভাগের কর্মীদের সংখ্যা প্রদান করবে।

৩.২ HAVING ক্লজ ব্যবহার

HAVING ক্লজ ব্যবহার করে আপনি GROUP BY এর পরে শর্ত দিতে পারেন।

SELECT department_id, AVG(salary)
FROM Employees
GROUP BY department_id
HAVING AVG(salary) > 50000;

এটি সমস্ত বিভাগের জন্য গড় বেতন প্রদান করবে যেখানে গড় বেতন ৫০,০০০ এর বেশি।


৪. উইন্ডো ফাংশন (Window Functions)

উইন্ডো ফাংশন সাধারণত PARTITION BY, ORDER BY এবং OVER ক্লজ ব্যবহার করে একাধিক রেকর্ডের উপর গণনা চালায়, যা প্রতিটি রেকর্ডের সাথে সম্পর্কিত একটি ফলাফল প্রদান করে।

৪.১ ROW_NUMBER() উইন্ডো ফাংশন

SELECT name, department_id, ROW_NUMBER() OVER (PARTITION BY department_id ORDER BY salary DESC) AS rank
FROM Employees;

এটি Employees টেবিলের কর্মীদের বেতন অনুযায়ী র‌্যাঙ্ক প্রদান করবে, তবে এটি বিভাগ অনুযায়ী পার্টিশন করে র‌্যাঙ্ক তৈরি করবে।

৪.২ RANK() উইন্ডো ফাংশন

SELECT name, department_id, RANK() OVER (PARTITION BY department_id ORDER BY salary DESC) AS rank
FROM Employees;

এটি Employees টেবিলের কর্মীদের র‌্যাঙ্ক প্রদান করবে, যেখানে সমান বেতনের কর্মীদের জন্য একই র‌্যাঙ্ক প্রদান করবে।


৫. ট্রানজ্যাকশন (Transactions)

SQL ট্রানজ্যাকশন ব্যবহারের মাধ্যমে আপনি ডেটাবেসের সমস্ত পরিবর্তন একত্রে, নিরাপদভাবে এবং সঠিকভাবে করতে পারেন। এটি COMMIT, ROLLBACK, এবং SAVEPOINT এর মাধ্যমে কাজ করে।

৫.১ COMMIT এবং ROLLBACK

BEGIN TRANSACTION;
UPDATE Employees SET salary = salary + 5000 WHERE department_id = 1;
COMMIT;

এটি সমস্ত পরিবর্তন সম্পন্ন করে এবং ডেটাবেসে সেগুলি সেভ করবে। যদি আপনি চান যে কোনো ভুলের কারণে সবকিছু পূর্বের অবস্থায় ফিরে আসুক, তবে ROLLBACK ব্যবহার করতে হবে।

BEGIN TRANSACTION;
UPDATE Employees SET salary = salary + 5000 WHERE department_id = 1;
ROLLBACK;

৫.২ SAVEPOINT

BEGIN TRANSACTION;
UPDATE Employees SET salary = salary + 5000 WHERE department_id = 1;
SAVEPOINT my_savepoint;
UPDATE Employees SET salary = salary + 3000 WHERE department_id = 2;
ROLLBACK TO SAVEPOINT my_savepoint;
COMMIT;

এটি একটি পয়েন্ট তৈরি করবে যেখানে আপনি চাইলে ট্রানজ্যাকশন পূর্ববর্তী অবস্থায় ফিরিয়ে নিতে পারবেন।


৬. স্টোরড প্রোসিডিউর (Stored Procedure) এবং ফাংশন (Function)

Stored Procedure এবং Function ব্যবহার করে আপনি ডেটাবেসে লজিক বা কোড সংরক্ষণ করতে পারেন, যা বারবার ব্যবহার করা যেতে পারে। এগুলি SQL কুয়েরি অপটিমাইজেশন এবং পুনঃব্যবহারযোগ্যতা নিশ্চিত করতে সাহায্য করে।

CREATE PROCEDURE IncreaseSalary (IN emp_id INT, IN inc_amount INT)
BEGIN
    UPDATE Employees SET salary = salary + inc_amount WHERE id = emp_id;
END;

এটি একটি Stored Procedure তৈরি করবে, যা নির্দিষ্ট কর্মীর বেতন বৃদ্ধি করবে।


সারাংশ

অ্যাডভান্স এসকিউএল হল SQL-এর উন্নত ফিচারগুলি যা ডেটাবেস পরিচালনা এবং জটিল কুয়েরি লেখার জন্য ব্যবহৃত হয়। এর মধ্যে JOIN, GROUP BY, HAVING, Subqueries, Window Functions, Transactions, Stored Procedures ইত্যাদি অন্তর্ভুক্ত। এই কৌশলগুলি ব্যবহার করে আপনি ডেটাবেসের তথ্য আরও কার্যকরীভাবে বিশ্লেষণ, আপডেট, এবং পরিচালনা করতে পারেন।

common.content_added_by

এসকিউএল অস্থায়ী টেবিল (SQL Temporary Table)

258
258

স্বল্প সময়ের জন্য ডেটাবেজে কোনো তথ্য জমা রাখতে SQL অস্থায়ী(Temporary) টেবিল ব্যবহার করা হয়।


SQL Temporary টেবিলের ব্যবহার

  • অস্থায়ী টেবিলের অনেক ধরণের সুবিধা রয়েছে। RDBMS ডেটাবেজ সিস্টেমে অস্থায়ী টেবিল সাপোর্ট করে।
  • অস্থায়ী টেবিল ব্যবহার করে আপনি ডেটাবেজ টেবিলে তথ্য জমা রাখার পাশাপাশি অন্যান্য টেবিলের মত SELECT, UPDATE, JOIN ইত্যাদি SQL কমান্ড সম্পাদন করতে পারবেন।
  • অস্থায়ী তথ্য সংরক্ষনের জন্য কিছু কিছু ক্ষেত্রে অস্থায়ী টেবিল অতীব প্রয়োজন হয়ে পড়ে। যেমন- বর্তমান ইউজারের শেষন(session) সমাপ্ত হবে এমন সময় তার সকল তথ্য মুছে ফেলার জন্য অস্থায়ী টেবিল ব্যবহৃত হয়। MySql ভার্সন ৩.২৩ এবং পরবর্তী ভার্সন-সমূহে অস্থায়ী টেবিল যুক্ত হয়েছে।

বিঃদ্রঃ যতক্ষন পর্যন্ত শেষন(session) সক্রিয় থাকে কেবল ততক্ষন পর্যন্তই অস্থায়ী টেবিলে তথ্য সংরক্ষিত থাকে।

আপনি যদি পিএইচপি স্ক্রিপ্ট এর মাধ্যমে SQL কোড রান করান তাহলে পিএইচপি কোড সম্পাদন শেষে অস্থায়ী(Temporary) টেবিলে সংরক্ষিত তথ্য স্বয়ংক্রিয়ভাবে মুছে যাবে।

আপনি যদি MySQL ডেটাবেজকে এক্সেস(Access) করার জন্য MySql Client Program ব্যবহার করে থাকেন তাহলে প্রোগ্রামটি বন্ধ হওয়ার পরে অস্থায়ী টেবিলটি মুছে যাবে। অথবা আপনি নিজ থেকে ম্যানুয়ালিও টেবিলটি মুছে ফেলতে পারেন।

SQL Temporary টেবিলের সিনটেক্স

CREATE TEMPORARY TABLE name_of_table (
    name_of_column,
    name_of_column,
...
);

 

নিম্নের উদাহরনে আমরা অস্থায়ী টেবিলের ব্যবহার দেখবোঃ

CREATE TEMPORARY TABLE Student_works (
    Student_name VARCHAR(50) NOT NULL,
    Total_submited_work VARCHAR(50) NOT NULL
);

 

অস্থায়ী টেবিল গুলো আমরা স্বল্প প্রয়োজনে ব্যবহার করবো। এতে ডেটাবেজে জায়গাও সাশ্রয় হয়।


আপনি ডেটাবেজে কখনই অস্থায়ী টেবিলের তথ্য দেখতে পারবেন না। আপনি যদি SHOW TABLES কমান্ড ব্যবহার করে আপনার টেবিল লিষ্ট বের করেন সেখানেও অস্থায়ী টেবিলটি খুঁজে পাবেন না। এখন আপনি যদি লগ-আউট করেন অর্থাৎ আপনার বর্তমান MySql সেশনটি শেষ হওয়ার পর আপনি আর এই টেবিলের তথ্য গুলো অ্যাক্সেস(Access) করতে পাবেন না। এমন কি আপনার অস্থায়ী টেবিলটিও আর থাকবে না।

অস্থায়ী(temporary) টেবিল ডিলিট

MySql ডেটাবেজের ক্ষেত্রে ডেটাবেজ কানেকশনের সমাপ্তি ঘটলেই অস্থায়ী টেবিল মুছে যায়। কিন্তু আপনি যাদি ডেটাবেজের কাজ সম্পন্ন হওয়ার পূর্বেই অস্থায়ী টেবিল মুছে ফেলতে চান তাহলে DROP TABLE কমান্ড ব্যবহার করতে পারেন।

DROP TABLE name_of_table;
common.content_added_by

এসকিউএল ইনজেকশন (SQL Injection)

405
405

SQL Injection হলো কোড ইঞ্জেক্ট করার একটি কৌশল যা আপনার ডেটাবেজকে ধ্বংস করে দিতে পারে।

ওয়েবপেজ এর মাধ্যমে ডেটাবেজে খারাপ(malicious ) কোড ইনপুট/জমা করে রাখাই হলো SQL Injection।

ওয়েব সাইট হ্যাকিং কৌশলগুলোর মধ্য SQL Injection অন্যতম।


ওয়েব পেজে SQL এর ব্যবহার

পূর্ববর্তী অধ্যায়গুলোতে আমরা শিখে এসেছি SQL ব্যবহার করে কিভাবে ডেটাবেজের তথ্য আপডেট এবং পুনরূদ্ধার করতে হয়।

ওয়েব পেজে ইউজারদেরকে প্রায়ই তাদের নিজস্ব সার্চ ভ্যালু ব্যবহার করার অনুমতি দেওয়া হয় যা ব্যবহার করে তারা ওয়েব পেজের তথ্য প্রদর্শন করতে পারে।

SQL স্টেটমেন্ট-সমূহ শুধুমাত্র টেক্সট হওয়ায় ইউজার খুব সহজেই ডায়নামিকভাবে SQL কোড গুলোকে পরিবর্তন করে ফেলতে পারেঃ

ওয়েবপেজ থেকে আপনি যখন ইউজারকে তথ্য ইনপুট এর সুযোগ দেন কেবল তখনই SQL Injection ঘটে। যেমন- আপনি ইউজারকে তার নাম/আইডি ইনপুট করতে বললেন, কিন্তু সে নাম/আইডি এর পরিবর্তে ইনপুট হিসাবে নিম্নের ন্যায় SQL কমান্ড ইনপুট দিল এবং যা আপনি আপনার নিজের অজান্তেই আপনার ডেটাবেজে রান করালেন।

উদাহরণ

solidUserId = getRequestString("User_Id");
solidSQL = "SELECT * FROM Total_Users
WHERE User_Id = " + solidUserId;

 

উপরের উদাহরণে সিলেক্ট স্ট্রিং এর সাথে solidUserId ভ্যারিয়েবলটি যোগ করে একটি SELECT স্টেটমেন্ট তৈরি করা হয়েছে যা ইউজার এর নিকট হতে তথ্য ইনপুট নিয়ে ডেটাবেজ থেকে সংশ্লিষ্ট তথ্য নিয়ে আসে।


আবারও SQL Injection

SQL Injection এমন একটি কৌশল যা ওয়েব পেজের মাধ্যমে ডেটাবেজে খারাপ কোড ইনপুট দিয়ে SQL কমান্ড ইঞ্জেক্ট করতে পারে।

ইঞ্জেক্টকৃত SQL কমান্ড পূর্ববর্তী SQL কমান্ড গুলোকে পরিবর্তন করতে পারে যা ওয়েব এপ্লিকেশনের নিরাপত্তায় বিঘ্ন সৃষ্টি করে।


SQL Injection 1=1 এর উপর ভিত্তি করে সর্বদাই সত্য

উপরের উদাহরণটিতে আরো একবার লক্ষ্য করুন, ঐ কোডের মূল উদ্দেশ্য ছিল ইউজার আইডির মাধ্যমে একটি ইউজারকে সিলেক্ট করার জন্য SQL স্টেটমেন্ট তৈরি করা।

যদি ইউজারকে ভুল ইনপুট প্রদানে বাধা দেওয়া না হয়, তাহলে ইউজার নিম্নের মত কিছু স্মার্ট ইনপুট প্রবেশ করাবেঃ

User_Id:

<input type="text" value="103 or 1=1">

সার্ভারের ফলাফল

SELECT * FROM Total_Users WHERE User_Id = 103 or 1=1

 

উপরের কোড একটি বৈধ SQL স্টেটমেন্ট। যেহেতু WHERE 1 = 1 সর্বদাই সত্য, সুতরাং ইহা ইউজার টেবিল থেকে সকল তথ্য রিটার্ন করবে।

উপরের উদাহরণটি কি আপনার কাছে বিপজ্জনক বলে মনে হচ্ছে?
একবার ভেবে দেখুন যদি এই টেবিলে ইউজার এর নাম এবং পাসওয়ার্ড থাকতো তাহলে কি হত?

নিম্নের SQL স্টেটমেন্টি অনেকটা উপরের স্টেটমেন্ট এর মতইঃ

SELECT User_Id, User_Name, User_Pass
FROM Total_Users WHERE User_Id = 103 or 1=1

 

এক্ষেত্রে একজন স্মার্ট হ্যাকার ইনপুট ফিল্ডে 103 অথবা 1=1 ইনপুট করে ডেটাবেজ থেকে খুব সহজেই ইউজারের সকল তথ্য অ্যাক্সেস করতে পারবে।


SQL Injection  ""="" এর উপর ভিত্তিকরে সর্বদাই সত্য

ইউজার লগ-ইন ভেরিফাই করার জন্য নিম্নে একটি সাধারন এইচটিএমএল ফর্ম এর গঠন দেওয়া হলোঃ

User Name:

<input type="text">

Password:

<input type="text">

সার্ভার কোড

User_Name = getRequestString("User_Name");
User_Pass = getRequestString("User_Pass");
sql = "SELECT * FROM Total_Users WHERE User_Name ='" + User_Name + "'
     AND User_Pass ='" + User_Pass + "'"

 

এক্ষেত্রে একজন স্মার্ট হ্যাকার ইনপুট ফিল্ডে " " OR " "=" " ইনপুট করে খুব সহজেই ডেটাবেজ থেকে ইউজারের সকল তথ্য অ্যাক্সেস করতে পারে।

সার্ভার কোড নিম্নের মত একটি বৈধ SQL স্টেটমেন্ট তৈরি করবেঃ

ফলাফল

SELECT * FROM Total_Users WHERE User_Name ="" or ""="" 
AND User_Pass ="" or ""=""

 

উপরের স্টেটমেন্টটি একটি বৈধ SQL স্টেটমেন্ট। এটি টেবিল থেকে ইউজারের সকল তথ্য রিটার্ন করবে যেখানে WHERE ""="" সর্বদাই সত্য।


Batched SQL স্টেটমেন্ট এর উপর ভিত্তিকরে SQL Injection

অধিকাংশ ডেটাবেজই ব্যাচ SQL স্টেটমেন্ট সাপোর্ট করে। দুই বা ততোধিক SQL স্টেটমেন্ট এর সমষ্টিই হলো ব্যাচ SQL স্টেটমেন্ট। একটি স্টেটমেন্ট থেকে অন্য একটি স্টেটমেন্টকে আলাদা করতে সেমিকোলন ব্যবহার করা হয়।

উদাহরণ

SELECT * FROM Total_Users;
DROP TABLE Users_Student;

 

উপরের SQL স্টেটমেন্টটি "Total_Users" টেবিলের সকল তথ্য রিটার্ন করবে এবং "Users_Student" টেবিলটিকে ডিলেট করে দিবে।

ধরুন, নিম্নের ন্যায় আমাদের সার্ভার কোড আছেঃ

সার্ভার কোড

solidUserId = getRequestString("User_Id");
solidSQL = "SELECT * FROM Total_Users WHERE User_Id = " + solidUserId;

 

এবং একজন ইউজার নিম্নের মত ইনপুট দিলঃ

User id:


<input type="text" value="103; DROP TABLE Users_Student" style="width:50%">

 

তাহলে সার্ভারে নিম্নের মত একটি বৈধ SQL স্টেটমেন্ট তৈরি হবেঃ

ফলাফল

SELECT * FROM Total_Users WHERE UserId = 103;
DROP TABLE Users_Student;

 


সুরক্ষার জন্য প্যারামিটার ব্যবহার করুন

কোনো কোনো ওয়েব ডেভেলোপার কিছু নির্দিষ্ট শব্দ বা ক্যারেক্টারকে "blacklist" করে রাখে। হ্যাকাররা যেন এই শব্দ বা ক্যারেক্টার গুলো ইনপুট ফিল্ডের সার্স প্যারামিটার হসাবে ব্যবহার করে SQL ইনজেকশন ঘটাতে না পারে।

ইহা খুব একটা কার্যকরী পদ্ধতি নয়। কিছু শব্দ যেমন- delete অথবা drop এবং কিছু ক্যারেক্টার যেমন- সেমিকোলন(;) অথবা উদ্ধৃতি চিহ্ন("") সকল SQL ভাষাতেই ব্যবহত হয়। তাই এই শব্দ বা ক্যারেক্টারসমূহ ইনপুটে সম্মতি দেওয়া উচিৎ।

SQL ইনজেকশন আক্রমণকে প্রতিরোধ করার সবচেয়ে কার্যকরী এবং সঠিক পদ্ধতি হলো SQL প্যারামিটার ব্যবহার করা।

SQL প্যারামিটার হলো ভ্যালু যা SQL কুয়েরি সম্পাদনের সময় যুক্ত করা হয়। ইহা SQL এর কন্ট্রোলার হিসাবে কাজ করে।

common.content_added_and_updated_by

এসকিউএল হোয়েস্টিং (SQL Hosting)

275
275

SQL হোস্টিং

আপনি যদি আপনার ওয়েবসাইটের মাধ্যমে ডেটাবেজে ডেটা সংরক্ষন করে পুনরায় পেতে চান তাহলে আপনার ওয়েব সার্ভার SQL ভাষা ব্যবহার করে এমন একটি ডেটাবেজে-সিস্টেমে এক্সেস থাকতে হবে।

আপনি যদি Internet Service Provider(ISP) কর্তৃক আপনার ওয়েব সার্ভার হোস্ট করে থাকেন তাহলে আপনাকে SQL হোস্টিং প্ল্যান খুঁজতে হবে। MySQL, SQL Server, MS SQL Server এবং MS Access ইত্যাদি রিলেশনাল ডেটাবেজ-সমূহ সচারচর ব্যবহত SQL হোস্টিং ডেটাবেজ ।


MySQL

MySQL ওয়েবসাইটের জন্য জনপ্রিয় এবং অধিক ট্রাফিকযুক্ত একটি ডেটাবেজ সফটওয়্যার।

MySQL অনেক শক্তিশালী এবং সম্পূর্ন বৈশিষ্ট্যযুক্ত SQL ডেটাবেজ সিস্টেম।


ওরাকল

ডেটাবেজ চালিত অধিক ট্রাফিকযুক্ত ওয়েবসাইটের জন্য ওরাকলও একটি জনপ্রিয় ডেটাবেজ সফটওয়্যার।

ওরাকল অনেক শক্তিশালী এবং সম্পূর্ন বৈশিষ্ট্যযুক্ত SQL ডেটাবেজ সিস্টেম।


MS SQL সার্ভার

ডেটাবেজ চালিত অধিক ট্রাফিকযুক্ত ওয়েবসাইটের জন্য মাইক্রোসফট SQL সার্ভার একটি জনপ্রিয় ডেটাবেজ সফটওয়্যার।

SQL সার্ভার অনেক শক্তিশালী এবং সম্পূর্ন বৈশিষ্ট্যযুক্ত SQL ডেটাবেজ সিস্টেম।


এক্সেস

মাইক্রোসফট এক্সেস সাধারণ ডেটাবেজের জন্য একটি ভালো সমাধান।

অধিক ট্রাফিকযুক্ত ওয়েব সাইটের জন্য এক্সেস ভালো কাজ করে না এবং ইহা MySQL, SQL সার্ভার অথবা ওরাকলের মত শক্তিশালী না।

common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion